package ExceptionAndThread.Exception;

import java.io.FileNotFoundException;
import java.io.IOException;

/*
    throws关键字：异常处理的第一种方法，交由别人处理
    作用：
        当方法内部抛出异常对象时，那么就必须处理这个异常对象
        可以使用throws关键字处理异常对象，会把异常对象声明抛出给方法的调用者处理，最终由JVM处理-->中断处理
    使用格式：
        修饰符  返回值类型  方法名（参数列表） throws AAAException，BBBException ...{
            throw new AAAException("...")
            throw new BBBException("...")
            ...
         }
    注意：
        1、throws关键字必须写在方法声明处
        2、throws关键字后面声明的异常必须是Exception或者其子类
        3、方法内部如果抛出了多个异常对象，那么throws后面必须也声明多个异常
            如果抛出的异常有父子类关系，则直接声明父类即可
        4、调用了一个声明抛出异常的方法，则必须处理声明的异常
           要么继续使用throws声明抛出，交给方法的调用者，最终交给JVM
           要么try...catch自己处理异常
*/
public class Throws01 {
    public static void main(String[] args) throws IOException {

        readfile("ivy/file.txt");

    }
/*
    定义一个方法，对传递的文件路径进行判断
    如错误，抛出错误异常，并返回至方法的调用者
*/


    //FileNotFoundException  extends IOException extends Exception， 所以只需要写IOException，或者直接写Exception
    public static void readfile(String filename) throws FileNotFoundException, IOException {
        if (!filename.equals("ivy/file.txt")) {
            throw new FileNotFoundException("文件路径不正确");
        }
        if (!filename.endsWith(".txt")) {
            throw new IOException("文件类型不正确");
        }
        System.out.println("文件读取完毕");
    }
}
